﻿using System;
using System.Collections.Generic;

using Microsoft.Xna.Framework;


namespace CaptureVision.Sunflower
{
    public interface IVector
    { }

    public interface IVector<out T> : IVector
    {}


    public interface IVector1<T> : IVector<T> 
    {
        T X { get; set; }
    }

    public interface IVector2<T> : IVector1<T>
    {
        T Y { get; set; }
    }

    public interface IVector3<T> : IVector2<T>
    {
        T Z { get; set; }
    }

    public interface IVector4<T>   : IVector3<T>
    {
        T W { get; set; }
    }

    public class Vec<T> : IVector<T>
    {}

    public class Vec1<T> : Vec<T>, IVector1<T>
    {
        public T X { get; set; }
    }

    public class Vec2<T> : Vec1<T>, IVector2<T>
    {
        public T Y { get; set; }
    }


    public class Vec3<T> : Vec2<T>,  IVector3<T>
    {
        public T Z { get; set; }
    }

    public class Vec4<T> : Vec3<T>, IVector4<T>
    {
        public T W { get; set; }
    }


}